Segmented ray casting data parallel volume rendering

ABSTRACT

Volumetric data are rendered onto an image plane by first organizing the volumetric data into a plurality of blocks of data, each block of data including a plurality of voxels arranged in cubic structure. The blocks of volumetric data are stored in, and processed by a processor element array of a massively data-parallel computer system. For any viewing angle, a plurality of parallel rays are cast through the image plane to traverse the volumetric data. In a ray collection phase, each processor element, in parallel with the other processor elements, determines which segments of the rays interpolate voxels of its associated block of data. In a segment value combination phase, each processor element, in parallel with the other processor elements, determines the integrated contribution of the interpolated voxels on the path of the ray segments traversing its block of data. And, in a final accumulation phase, the segment values for each ray are accumulated in order to determine the value of the pixels associated with each of the ray segments.

This application is a continuation of application Ser. No. 08/130,600filed Oct. 1, 1993 now abandoned.

FIELD OF THE INVENTION

The present invention relates generally to computer systems, and moreparticularly, to rendering volumetric data to produce a two-dimensionalimage.

BACKGROUND OF THE INVENTION

Many physical objects can be represented spatially and temporally bycomputerized models. Scaler and vector volumetric data representing thestructures or features of such objects can be generated empirically byusing medical scanners, seismic survey, sonar, radar, and the like.Volumetric data can also be synthetically generated by computerizedmodels. Objects represented can include the internal structure of atoms,the distribution of background radiation in the universe, or evenimaginary objects.

Computer generated images produced with the volumetric data find utilityin computer-aided design, and in scientific and medical visualizationfields. A two-dimensional (2D) image perceived as a three-dimensional(3D) presentation can convey large amounts of information in a morecomprehensible form than is possible using other traditional techniquessuch as statistical tables or voluminous prose. Translucent volumerendering or images representing a selected plane or slice through anobject are especially helpful for studying internal structures, and forvisually relating the interior of objects to their external forms.

Images presented in an animated sequence can take advantage of motionparallax for better morphological understanding of the objectrepresented by the volumetric data. Currently, on most computer systems,the time required to generate 2D images from volumetric data is too longto support real-time generation rates and manipulation. If the imagesare generated too slowly, the viewer's attention lapses, thoughtprocesses are disrupted, and the significance of differences betweensuccessive frames of the image is lost.

In volume rendering, a volume element or “voxel” is the 3D equivalent ofa 2D pixel, or picture element. Voxels are usually organized into aparallelpiped arrangement relative to some Cartesian coordinate system.Each voxel represents a quantum data unit of the volume. The voxel canhave associated scaler or vector values symbolizing some property of theportion of the object in the immediate vicinity of the correspondingvoxel.

To view an object represented by volumetric data, the values are mappedinto pixels in the image plane. For the purpose of viewing, the data ofthe voxel data are usually expressed abstractly in terms of color andopacity. Color may be used to differentiate a particular objectproperty, such as density or heat distribution, and the opacity of thecolor may indicate the relative intensity of the differentiation. For agiven orientation of the object, the Cartesian grid of the volume datamay not always align perfectly with the Cartesian grid of the imageplane. Various techniques are known for deriving the value of the 3Dspace between adjacent voxels, for example, tri-linear interpolation.

The techniques of volume rendering can be categorized as eithergeometric iso-surface rendering, or direct volume rendering. Geometriciso-surface rendering converts the 3D data into geometry, usuallypolygons which can be displayed using traditional imaging techniques.However, other than for simple objects, substantial processing isusually required to extract the iso-surfaces.

Direct volume rendering, on the other hand, utilizes the entire originalgenerated volumetric data in the final rendering of the image, and thusany part, including the interior of the object can be viewed by mappingthe 3D voxels onto the 2D pixels. Two mapping techniques, forward andbackward mapping, are commonly used for direct volume rendering.

In forward, or object space mapping, the 3D voxels are projected ontothe 2D pixels of the image plane. Backward, or image space mappingplaces an imaginary viewer and an imaginary image plane in thethree-dimensional environment of the object. The composition of thescene on the image plane is determined by casting imaginary rays throughthe pixels of image plane to traverse the volumetric data. The color andopacity of the volumetric data encountered approximately along thetrajectory or path of the ray are interpolated, and integrated, usuallyat regularly spaced intervals to determine the colors and opacities ofthe pixels.

In general, ray-casting is well suited for manipulation by computersystems having massively parallel architectures. Massively parallelcomputers have a plurality of processor elements (PEs), each PE havingaccess to an associated memory. Massively parallel computers arecategorized as either Multi-Instruction Multiple-Data (MIMD), orSingle-Instruction Multiple-Data (SIMD).

One of the main differences between MIMD and SIMD architectures is thatthe instruction stream is the same for each PE of a SIMD computer,whereas the instructions for the PEs of a MIMD computer can bedifferent. In other words, MIMD computers can be considered extensionsof uni-processors with each PE working on some portion of the totalwork-load. Typically, jobs are parceled out serially to the PEs as theybecome idle, with minimal attention paid to synchronizing the PEs.

On the other hand, in a SIMD computer, each PE is manipulating differentdata while constrained to execute the same instruction in a lock-stepmanner. Processes used by SIMD computers are sometimes called“data-parallel processes” since the parallelism is on the data, and notthe executed instructions. As an advantage, SIMD computers can beprovided with a substantially larger number of processor elements thancomparably priced MIMD computers. For example, SIMD computers havingthousands of PEs are readily available, while MIMD computers of asimilar price typically include less than a hundred PEs.

Keeping many thousands of PEs busy, as will be discussed herein, is anon-trivial problem. Unless the work load is carefully balanced amongthe processors, the efficiencies gained by the high degree ofparallelism are quickly lost. Since the SIMD architecture requires thatall active processors, at any one time, execute the same instruction,inactive processors remain stalled until active processors havecompleted a current set of instructions. Therefore, while implementingapplications for SIMD computers, the data structures and processes whichmanipulate the data must be especially designed in order to maximizeprocessing parallelism.

In one known data-parallel implementations, the volumetric data areoriented so a particular processor element can find all of the data fordetermining color and opacity values of a particular ray within itsassociated memory. In more detail, the volumetric data are firstdistributed among the local memories of each PE according to each raycast. The goal is to have each PE cast a complete ray through thevolumetric data stored in its associated memory, from start to finish.The required accumulation of pixel values, e.g., color and opacity, fora single ray are all performed within a single PE. Obviously, for astationary viewing angle this technique is fairly efficient.

However, difficulties arise if the viewer desires to manipulate therepresented object to view multiple orientations. To accomplish this inthe prior art, the volumetric data are routed from PE to PE by a seriesof shears to align the data with a particular viewing angle. In additionto taking a considerable amount of time, multiple sheers tend tointroduce progressively more observable artifacts into the final imageas a result interpolation errors after shearing to reconstruct theCartesian grid of the voxels.

Another data parallel volume rendering technique is based on objectparallelism. That is, for a given set of data stored in a singleprocessor, only the values of the intersecting rays are computed. Here,the volumetric data are only reoriented if the angle of rotation isgreater than 45 degrees with respect to a Cartesian axes of thevolumetric data. Once the volumetric data are in place, for any givenviewing orientation that does not exceed 45 degrees from the originalviewing orientation of the data, rays are cast into the volumetric data.Each PE stores adjacent columns or slices of data. If a particular raystays within a slice, all data can be obtained from a single PE.Otherwise, if the orientation of the ray strays out of the bounds of theslice of data, the partial values of the ray are shifted to aneighboring PE for continued computation. In order to have all PEs shifttheir rays synchronously, the rays are not necessarily cast from theirposition on the image plane. Rather, the rays are spaced at the sameoffset as the voxels. By originating rays at an offset equal to thespacing between the voxels, parallel rays cross voxel boundaries at thesame time, resulting in high processor utilization. However, to createthe final image, the ray values must be reinterpolated to obtain thevalue of the pixel. Interpolation tends to introduce annoying artifactsin the image.

A closely related object parallel algorithm exists in the MIMD domain ofmassively parallel computers. Computers built according to the MIMDarchitecture are not constrained by the lock-step instruction cyclescharacteristic of SIMD processors. In a hybrid image partition-ray dataflow technique of parallel ray casting, ray values are only computedwhen rays are cast through data within the spatial bounds of aparticular processor. As an advantage, in MIMD architecture, rays do notneed to be spaced at the same offset as the voxels. Therefore,reinterpolation of the ray values to produce the image is not required.However, as stated earlier, MIMD computers are relatively expensive whencompared with SIMD computers having a substantially greater number ofprocessors.

From the foregoing, it is apparent that there is a need for a techniquewhich permits rapid volumetric data rendering. It is desired that thetechnique enables interactive visualization of represented objectswithout diminishing the quality of the rendered image. It is to theseends the present invention is directed.

SUMMARY OF THE INVENTION

A system and method are provided for interactively visualizing a real orimaginary object represented by three-dimensional or volumetric data.The volumetric data, which may be empirically or syntheticallygenerated, are composed of values or voxels. The voxels are projectedonto a two-dimensional image plane having a plurality of pixels. Thevisualization, in part, is achieved by organizing the volumetric datainto a plurality of blocks of data, each block of data including aplurality of voxels arranged in parallelpiped structure. Each block ofvolumetric data is stored in, and processed by a particular processorelement of a massively data-parallel computer system having a pluralityof processor elements.

After the blocks of volumetric data are fixed in the associatedprocessor elements, the volumetric data may be rendered for any viewingangle, without any further rearrangement of the volumetric data.Preferably, a plurality of rays are cast through the image plane totraverse the volumetric data. The rays are preferably normal to theimage plane for a given viewing angle. There is one ray for each pixelof the image plane. That portion of a particular ray which traverses aparticular block of data is called a ray segment. The volumetric dataapproximately along the path of the ray segments are interpolated, andintegrated at regularly spaced intervals.

The object can be rendered, at a higher degree of parallelism, byperforming phased processes on the volumetric data. Rendering can beperformed for any viewing angle without requiring the data to be routedto different processor elements. In addition, the image can be producedwithout reinterpolating the volumetric data thus avoiding undesirableartifacts.

In a ray collection phase, each processor element, in parallel with theother processor elements, determines which sub-set of ray segmentstraverse the associated block of data. The sub-sets of ray segments aredetermined by projecting the faces of the associated block of data ontothe image plane.

In a segment combining phase, each processor element, in parallel withthe other processor elements, determines the integrated contribution ofthe interpolated values for the sub-set of ray segments traversing itsblock of data.

In a final accumulation phase, the segment values of each entire ray areaccumulated in order to determine the value of the associated pixels.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1a is a block diagram of a data parallel computer which can be usedfor volume rendering;

FIG. 1b is a block diagram of a processor element of the computer ofFIG. 1a;

FIG. 2 diagrammatically shows the rendering of volumetric data onto atwo-dimensional image plane at two different angles relative to anobject represented by the volumetric data;

FIG. 3 is a perspective diagrammatic view of the three-dimensionalvolumetric data partitioned into a plurality of parallelpiped blocks ofdata;

FIG. 4 shows the projection of a three-dimensional block of data onto atwo-dimensional image plane;

FIG. 5 is a table showing an example of a data structure for a list ofrays which traverse through a block of data;

FIG. 6 shows a ray traversing a block of data;

FIG. 7 is a flow diagram illustrating a process of the invention, and;

FIG. 8 shows an ordered ray segment lists produced by the method of FIG.7.

DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT

FIG. 1a shows a Single-Instruction Multi-Data (SIMD) massively parallelcomputer system 100 which may be used according to the principles of theinvention to render two-dimensional (2D) images from three-dimensional(3D) or volumetric data representative of a real or imaginary object.The computer system 100 can include a front-end (FE) sub-system 110, aninput/output (I/O) sub-system 120, and a data parallel unit (DPU) 130,all connected to each other by a data communications bus 140.

The front-end sub-system 110 includes a central processor unit (CPU) 111and local memory 112. The CPU 111 is under the control of an operatingsystem, for example, “UNIX.” The FE sub-system 110 is responsible forcoordinating the overall operation of the parallel computer system. 100.

The I/O sub-system 120 typically includes input devices such as akey-board, a mouse or a joy-stick etc., output devices such a displayunit, printers, and the like, and bulk storage devices such as tape anddisk. The I/O sub-system 120 can also include communication interfacesto networks such as “ETHERNET.”

The data parallel unit 130 includes an array control unit (ACU) 131, aprocessor element (PE) array 150, and a global router 132. The ACU 131and PE array 150 are connected to each other by an ACU-PE bus 139. TheACU 131 can be a register-based load/store processor with internalregisters, data and instruction memory. The ACU 131 directly controlsthe operation of the PE array 150.

The PE array 150 includes a plurality of processor elements (PEs) 152.The PE array 150 can range in size from 1K (32×32) to 16K (128×128) PEs152. Diverging briefly to FIG. 1b, each PE 152 has an arithmetic logicunit 154, and, a local data memory 156 of, for example, 16K or 64K bytesof memory, connected to each other by bus 157.

The PEs 152 can communicate with each other via a nearest neighbornetwork 133 and the global router 132. For the purpose of nearestneighbor network 133, the PEs 152 may be arranged as a 2D toroidal meshto permit rapid data communication between the adjacent eightneighboring PEs 152 located in vertical, horizontal, and diagonaldirections, as generally indicated by reference numeral 133. The nearestneighbor network 133 is the fastest means for parallel datacommunications, but it is restricted by having all processor elementsshift data by the same amount for a given single instruction.

With the global router 132, the speed of communication is sacrificed forflexibility in routing. In other words, data can be arbitrarily routedbetween any of the PEs 152 for a given single instruction, but at aslower speed.

FIG. 2 diagrammatically shows how the computer system 100 can be used torender a 2D image 21 from volumetric data 10. The volumetric data 10represents a real or imaginary object. The volumetric data 10 may beempirically generated, for example from a CAT scanner, or the data canbe synthetically generated by, for example, the front-end subsystem 110using well-known modeling techniques. The data can be scaler or vectorvalues. The generated data are associated with a plurality of voxels 11arranged in a parallelpiped structure, each voxel 11 representing somequantum data unit volume of the represented object.

It is desired to render the volumetric data 10 as an image 21 that isperceived as being a 3D image. The image 21 may be projected onto atwo-dimensional (2D) image plane 20 of a display device 30 of the I/Osub-system 120. The image plane 20 includes a plurality of pictureelements or pixels 22 usually arranged according to some Cartesiancoordinate system. Interactive manipulation of the volumetric data 10may be accomplished with a control device, for example a joy-stick 50.Thus, the properties of the represented object can be studied in 3Dspace, from different viewing angles, such as position A and position Bas shown in FIG. 2.

As mentioned above, with most prior art SIMD rendering systems, theamount of time required to process volumetric data is too large topermit real-time volume rendering in response to interactive viewermanipulation. In most known rendering systems, the rendering time isproportional, in part, to the time required to rearrange the volumetricdata while the object is rotated to display a view from a differentangle.

Moreover, unless the workload is uniformly distributed over theprocessor elements 152, and unless the steps of the rendering processare carefully phased, some of the processors elements may be inactivefor a substantial amount of time. Inactive processor elements willdecrease throughput performance.

In addition, reorientation of the volumetric data 10 tends to shift thevoxels positions so that they are no longer aligned with the pixels 22of the image plane 20. Therefore, voxel values may need to bereinterpolated. Reinterpolation can introduce undesirable artifacts intothe image 21.

The invention affords a segmented ray casting system for data parallelvolume rendering that enables the generation of two-dimensional imagesof the object in a fraction of a second, without artifacts. The methodand apparatus of the invention can generate images at a rate suitablefor animated scene development without unduly restricting theorientation of the object.

More specifically, as is shown in FIG. 2, the segment ray casting systemand method enables scenes to be rendered by adjusting the viewing anglewithout aligning the volumetric data 10. The volumetric data 10 are heldstationary in the PE array 150, while the image plane 20 is orientedabout the volumetric data 10. The preferred structure of the stationaryvolumetric data 10 in the PE array is described in further detail below.

By using an input device such as the joy-stick 50, the image plane 20may be adjusted to be normal to the desired viewing angle, e.g. positionA or position B, as shown in FIG. 2. A plurality of imaginary rays 60,at right angles to the plane of the image 20, are cast throughvolumetric data 10. That is, there is one orthogonal ray 60 cast foreach pixel 22 of the image plane 20. The volumetric data 10 along thetrajectory of the rays 60, i.e., the voxels 11 approximately along thepath of the imaginary ray 60, are interpolated at regular intervals, forexample intervals 61 to 69, and extracted as color and opacity values.The color and opacity values are integrated to generate the color andopacity for each of the pixels 22 to render a particular orientation ofthe volumetric data 10. The process of interpolating, and integratingvoxel values will hereinafter be referred to as “combining the voxelvalues.”

FIG. 3 illustrates a preferred organization of the volumetric data 10 inaccordance with the principles of the invention. To maximize utilizationof the PE array 150, and to minimize rendering time disparities betweenvarious and rapidly shifting viewing angles, the volumetric data 10 areorganized into a subset of parallelpiped voxels or blocks of data 80.Each block of data 80 may be stored in an associated memory of one ofthe processor elements 152 of the PE array 150. Unlike most known SIMDimplementation, once the volumetric data 10 are stored in the PE array150, they do not need to be moved again for different views.

The ratio of the lengths along each dimension of the blocks of data 80are preferably configured as close to 1:1:1 as possible. The preferredshape of the blocks of data 80 is cubic to increase the likelihood thateach block of data 80 or subset of voxels 11, when processed in parallelby a corresponding PE 152, will consume about the same amount ofprocessing time. This maximizes utilization of the PE array 150regardless of orientation of the viewing angle. All of the blocks ofdata 80 processed by each phase of the rendering process, detailedbelow, are processed synchronously, in a lock-step manner, step-to-steplatencies are minimized.

After the blocks of data 80 are distributed in the PE array 150 by, forexample, the array control unit 131, the blocks of data 80 may beprocessed in a sequence of steps which are phased to maximize the dataparallel architecture of the SIMD computer 100. That is, the processingsteps of each of the PEs 152 manipulate the blocks of data 80 of thepartitioned volumetric data 10, and the pixels 22 of the image plane 20in parallel during each phase of the rendering process. In the preferredembodiment of the invention, the phases of the process, which aredescribed in greater detail below, are: ray collection, segment valuecombination, and final accumulation.

Phase I—Ray Collection

During the ray collection phase, for a given viewing angle, e.g. eitherposition A or B in FIG. 2, each PE 152, in parallel with the other PEs152, determines which of the rays 60 normal to the image plane 20traverse through the block of data 80 stored in its associated memory156.

FIG. 4 shows a first step of the ray collection phase. The block of data80 is projected onto the image plane 20 along the trajectory or path ofthe rays, generally indicated by numeral 60. The projected block of datasilhouettes a subset of the pixels 22 which are within, for example, apolygon 23. Only the silhouetted pixels can be the origin of raystraversing through the block of data 80. For example, a ray 70 emanatingfrom a pixel 24 traverses voxel 91 of the block of data 80. However, forreasons that will be described, this projection is only a firstapproximation of the rays which actually interpolate and integratevolumetric data within the projected block of data.

As shown in FIG. 5, each PE 152 a maintains a data structure of a raylist 200 which includes an entry 210 for each ray traversing through theblock of data 80 stored in its data memory 156. Each entry 210 includesa ray identification (ID) 211 to uniquely identify the traversing ray.The ray ID 211 is of course directly related to the pixel from which theray emerges. The ray position 212 may be given in, for example,Cartesian coordinates x, y, and z, and may indicate the point where theray enters the block of data 80. Values 213 associated with the entries210, expressed as, for example, color and opacity, are preferablyinitially set to zero.

As is shown in FIG. 6, not all rays of a particular ray list 200necessarily interpolate and integrate voxel values of the block of data80. If the volumetric data 10 is examined at, for example, regularlyspaced intervals 71-74, then ray 70 does not interpolate any voxelvalues during its traversal of the block of data 80. Therefore, in asecond step of the ray collection phase, the ray list 200 may be refinedto remove such rays.

After the ray lists 200 have been constructed for each of the blocks ofdata 80, the next phase, segment value combination, can commence.

Phase II—Segment Value Combination

In the segment value combination phase, each PE 152 computes therelative contribution, or “segment value,” of voxels positionedapproximately along the path of the segment of the ray delineated by theboundaries of the block of data 80. The combined values of each of theray segments of the ray list 200 of a particular processor element maybe accumulated in the value column 213 of the ray list 200. The exactintegration function used during this phase is usually determined by thetype of image that is desired. The only requirement is that theintegration function observe the associative property. The associativeproperty is observed if the order in which ray values are combined isnot changed for different groupings of values.

The preferred process of the voxel value combining phase of theinvention is shown in FIG. 7. The process which combines the voxelvalues can be stated as follows.

1) For each block of data 80 processed in parallel by a corresponding PE152;

2) In steps 710 and 720, for each ray traversing the block of data;

3) In steps 730 and 740, interpolate the voxel value; and

4) In step 750 integrate the current interpolated value with previouslyacquired values to determine the contribution of the ray segment to thecolor and value of the associated pixel.

The integration functions used may vary. For example, the integrationfunction for a transmission display such as a radiographic imagedetermines a weighted sum of the encountered voxel values. Theintegration function for iso-surfaces usually compute the normalizedlighting contribution of the voxels. Maximal Intensity Projection (MIP)simply takes the largest value encountered as its final color. A commonintegration function can be expressed as:

c _(i+1) =c _(i) +c _(s) a _(s)(1−a _(i))

a _(i+1) =a _(i) +a _(s)(1−a _(i))

where:

c_(i) is the current integrated color value of a pixel;

c_(s) is the color value of the currently interpolated voxel;

c_(i+1) is the accumulated color value of the pixel including thecurrently interpolated voxel;

a_(i) is the current integrated opacity value of the pixel;

a_(s) is the opacity value of the currently interpolated voxel; and

a_(i+1) is the accumulated opacity value of the pixel including thecurrently interpolated voxel.

During the segment value combination phase, each PE 152 determines thecolor and opacity contribution of all of the ray segments traversing aparticular block of data. Each ray segment is associated with aparticular pixel.

As each processor element 152 completes the computation of a combinedsegment value for a particular ray segment, the combined value 213 for aparticular ray segment maybe communicated to a processor element 152responsible for determining the color and opacity values of an entireray. An entire ray is associated with each one of the pixels 22. Thatis, associated with each pixel 22 there is a corresponding PE 152. Theray segment values can be maintained in, for example, a list whichreflects the sequence of traversal of the individual ray segments. Thelist is further described with respect to FIG. 8. After all segments forall blocks of data have had their values combined, the finalaccumulation phase can commence.

Phase III—Final Accumulation

In the final accumulation phase, for each of the pixels 22 of the imageplane 20, all of the combined segment values of the entire ray castthrough the pixel are integrated. The segment values are integrated inthe same order as their proximity to the image plane. Shown in FIG. 8,by way of example, are some of the blocks of data 80, enumerated B1 toB16. A first ray 72 sequentially traverses blocks of data B13, B9, B10,B6, B7, and B4. A second ray 73 sequentially traverses blocks of dataB15 and B16. The lists 74 and 75 store the ray segment values S13, S9,S10, S6, S7, and S4, and S15, S16, obtained during the integration inphase II, in corresponding order for rays 72 and 73, respectively.

Thus, should the PE 152 which is responsible for determining the raysegment value S10 for the block of data B10 complete its task at a laterpoint in time than the PEs associated with blocks of data B9 and B6, thesegment value S10 is inserted between the segment values S9 and S6obtained from the blocks of data B9 and B6. In other words, if aparticular block of data is occluded from the image plane 20 byintervening blocks of data, the segment value corresponding to the raysegment traversing the occluded block of data is inserted in the listafter any values of any ray segments traversing intervening blocks ofdata.

Proper integration of the ray segment values require that theintegration function be associative. The common integration function

c _(i+1) =c _(i) +c _(s) a _(s)(1−a _(i))

a _(i+1) =a _(i) +a _(s)(1−a _(i))

can be represented as a function of two vectors, r and s, the firstdescribes the current ray values, and the second describes theinterpolated values. That is, we let:

r=[c_(i) a_(i)]^(T), and s=[c_(s)a_(s) a_(s)]^(T).

Then for the function:

F(s,r)=r ₀ +s ₀(1−r ₁)

r₁+s₁(1−r₁)

It can be algebraically proven that:

F (s′, F (s, r)) and F (F (s′,s), r)

are equivalent, where s and s′ are adjacent interpolated values. Inother words, associativity is true for the integration function, andindividual ray segment values can be integrated as disclosed herein.

A significant difference between segmented ray casting in accordancewith the invention, and other known rendering procedures employing SIMDsystems, is image quality. Holding the volumetric data steady whilechanging the viewing angle, as is done in the invention, eliminatesundesirable artifacts due to reinterpolation. This makes the segmentedray casting of the invention particularly useful for medicalapplications where accurate, artifact free, image reproduction is ofparamount importance for reliable diagnosis.

In addition, the segmented ray collection, integration, and accumulationaccording to the invention, improves the distribution of the workloadover the processor elements of a massively parallel computer in ascaleable fashion. Therefore, the methods according to the inventiondecrease the amount of time required for rendering. Also, since the dataare held stationary, volumetric data routing time is eliminated. Thusthe method and system according to the invention make interactiveviewing a possibility.

Also, the processing time required for different integration functionsor interpretations of a particular viewing angle can be reduced by usingthe phased methodology according to the invention. The collection ofrays for a particular viewing angle is determined in Phase I. Differentrenderings can be produced by only repeating Phases II and III withdifferent integration functions.

The foregoing is merely illustrative of the principles of the invention.Those skilled in the arts will be able to create arrangements which,although not explicitly described herein, nevertheless, embody theprinciples within the spirit and scope of the invention as expressed inthe appended claims.

What is claimed is:
 1. An apparatus for rendering a three-dimensionalobject onto a two-dimensional image plane of a viewing device, thethree-dimensional object expressed as volumetric data, the volumetricdata including a plurality of voxels, each one of the plurality ofvoxels having an intensity value representative of a portion of thethree-dimensional object, the image plane having a plurality of pixels,comprising: an array of processor elements, each one of the processorelements of the array including a memory, each memory storing a subsetof the plurality of voxels at fixed locations of the memory and a raylist, each of the subsets of voxels being a parallelepiped block of aportion of the plurality of voxels; means for selecting a viewing angleof the image plane with respect to the subsets of voxels stored at thefixed locations of the memories; means for projecting a plurality ofrays from the image plane through the subsets of voxels stored at thefixed locations of the memories, the plurality of rays being projectedorthogonal to the image plane with each of the plurality of projectedrays having a corresponding entry in the ray list, there being one ofthe plurality of rays projected from each one of the plurality of pixelsof the image plane, a portion of each one of the plurality of rays whichis projected through one of the subsets of voxels being a ray segment;means for combining, for each ray segment, the intensity values of thevoxels positioned approximately along each ray segment into a segmentintensity value; and means for accumulating, for each of the pluralityof rays, the segment intensity values of the ray segments into a pixelintensity value, the pixel intensity value associated with each of theplurality of rays being utilized to render the tree-dimensional objectonto the image plane of the viewing device while the plurality of voxelsremain stored at the fixed locations of the memories of the array ofprocessors for any selected viewing angle.
 2. The apparatus of claim 1,wherein the means for combining combines the intensity values of thevoxels using an associative function.
 3. The apparatus of claim 2,wherein the associative function is expressed as c _(i+1) =c _(i) +c_(s) a _(s)(1−a _(i)) and a _(l+1) =a _(l) +a _(s)(1+a _(i)), wherec_(i) is a current accumulated color value of a pixel, c_(s) is a colorvalue of a currently interpolated voxel, c_(i+1) is a next accumulatedcolor value of the pixel including the color value of the currentlyinterpolated voxel, a_(s) is an opacity value of the currentlyinterpolated voxel, a_(i) is a current accumulated opacity value of thepixel, and a_(i+1) is a next accumulated opacity value of the pixelincluding the opacity value of the currently interpolated voxel.
 4. Theapparatus of claim 1, wherein each entry of the ray list includes a rayidentification, positional coordinates of the projected ray, andintensity values, the intensity values including color and opacityvalues associated with the three-dimensional object.
 5. The apparatus ofclaim 1, wherein the intensity values of each ray segment areinterpolated from the intensity values of the voxels positionedapproximately along the path of each ray segment.
 6. The apparatus ofclaim 1, wherein each parallelpiped block of a portion of the pluralityof voxels is cubic.
 7. The apparatus of claim 1, wherein for each of theplurality of rays the ray segment intensity values of the ray segmentsare stored in an order in the array list that corresponds to an order inwhich the subsets of volumetric data were traversed by the correspondingray of the plurality of rays.
 8. The apparatus of claim 1, wherein thearray of processor elements is configured to form a single-instructionmultiple-data multi-processor system.
 9. An apparatus for renderingvolumetric data having intensity values onto a viewing device,comprising: an array of processors, each processor including a memory,each memory storing a subset of the volumetric data at fixed locationsof the memory and an array list; a ray projecting means for projecting aplurality of rays orthogonal to a selected image plane of the viewingdevice through the subsets of volumetric data with each of the pluralityof projected rays having a corresponding entry in the ray list, andretrieving ray segment values corresponding to a portion of each rayprojected through one of the subsets of volumetric data; and means forcombining the ray segment values of each ray into a pixel value, thepixel value associated with each ray being utilized to render thevolumetric data onto the selected image plane of the viewing device. 10.A computerized method for rendering volumetric data having intensityvalues onto a viewing device using an array of processors, eachprocessor including a memory, comprising: storing a subset of thevolumetric data at fixed locations of each memory; storing an array listwith a plurality of entries in each memory, there being an entry in thearray list for each of a plurality of rays; orthogonally projecting theplurality of rays from a selected image plane of the viewing devicethrough the subsets of volumetric data; retrieving ray segment intensityvalues corresponding to a portion of each ray projected through one ofthe subsets of volumetric data; and combining the array segmentintensity values of each ray into a pixel value, the pixel value beingassociated with each ray being utilized to render the volumetric dataonto the selected image plane of the viewing device.
 11. A method forrendering a three-dimensional object represented by volumetric data ontoa two-dimensional image plane that includes a plurality of pixels, themethod comprising the steps of: organizing the volumetric data into aplurality of blocks; associating each of the plurality of blocks with acorresponding one of a plurality of processors; casting a ray from oneof the plurality of pixels of the image plane; identifying a firstsegment of the cast ray, wherein the first segment traverses a first ofthe plurality of blocks associated with a first of the plurality ofprocessors; identifying a second segment of the cast ray, wherein thesecond segment traverses a second of the plurality of blocks associatedwith a second of the plurality of processors; determining a firstintensity value for the first segment and a second intensity value forthe second segment; storing the first and second intensity values in alist, wherein the first and second intensity values have each arespective position in the list; and determining a pixel intensity valuefor the pixel associated with the cast ray by accumulating the first andthe second intensity values.
 12. The method of claim 11, wherein; thestep of determining the first intensity value includes combining theintensity values of a first plurality of voxels positioned along thefirst segment and the step of determining the second intensity valueincludes combining the intensity values of a second plurality of voxelspositioned along the second segment.
 13. The method of claim 11, whereinthe plurality of processors is configured to form a single instructionsmultiple-data multi-processor system.
 14. The method of claim 11,wherein the position of the first intensity value relative to theposition of the second intensity value is determined by the order inwhich the first of the plurality of blocks and the second of theplurality of blocks were traversed by the cast ray.
 15. A computingsystem for rendering a three-dimensional object represented asvolumetric data onto a two-dimensional image plane that includes aplurality of pixels, the computer system comprising: a computer readablestorage medium embodying a computer program; and a plurality ofprocessors configured to read the computer program and operate so as toorganize the volumetric data into a plurality of blocks, associate eachof the plurality of blocks with a corresponding one of a plurality ofprocessors, cast a ray from one of the plurality of pixels of the imageplane, identify a first segment of the cast ray, wherein the firstsegment traverses a first of the plurality of blocks associated with afirst of the plurality of processors, identify a second segment of thecast ray, wherein the second segment traverses a second of the pluralityof blocks associated with a second of the plurality of processors,determine a first intensity value for the first segment and a secondintensity value for the second segment, store the first and secondintensity values in a list, wherein the first and second intensityvalues have each a respective position in the list, and determine apixel intensity value for the pixel associated with the cast ray byaccumulating the first and second intensity values.
 16. The computersystem of claim 15, wherein the plurality of processors are configuredto form a single-instruction multiple-data multi-processor system. 17.The computer system of claim 15, wherein the position of the firstintensity value relative to the position of the second intensity valueis determined by the order in which the blocks were traversed by thecast ray.
 18. The computer system of claim 15, wherein the plurality ofprocessors are further configured to read the computer program andoperate so as to combine the intensity values of a first plurality ofvoxels positioned along the first segment.